package DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


import Negocio2.Curso;
import Negocio2.Departamento;
import Negocio2.Disciplina;
import Negocio2.Turma;


public class CursoDAO {
	private Connection conexao;
	public CursoDAO() throws SQLException{
		this.conexao = CriaConexao.getConexao();
	}
	public void adiciona(Curso curso)throws SQLException{
		
		//Prepara conex�o
		String sql = "insert into cursos(nome)"+
		"values(?)";
		PreparedStatement stmt = conexao.prepareStatement(sql);
		
		
		//Seta os valores
		stmt.setString(1, curso.getNome());
	
		
		//Executa o c�digo SQL
		stmt.execute();
		stmt.close();
	}
	
	public List<Curso> getLista() throws SQLException{
		String sql = "select * from cursos";
		PreparedStatement stmt = this.conexao.prepareStatement(sql);
		ResultSet rs = stmt.executeQuery();
		
		List<Curso> listaCursos = new ArrayList<Curso>();
		
		while(rs.next()){
			Curso curso = new Curso();
			curso.setNome(rs.getString("nome"));
			curso.setCodigo(rs.getString("codigo"));
			listaCursos.add(curso);
		}
		rs.close();
		stmt.close();
		return listaCursos;
	}
	
	public void altera(Curso curso) throws SQLException{
		String sql = "update cursos set nome=? where cod_curso=?";
		PreparedStatement stmt = conexao.prepareStatement(sql);	
		
		//Seta os valores
		stmt.setString(1, curso.getNome());
		stmt.setString(2, curso.getCodigo());
		
		//Executa o c�digo SQL
		stmt.execute();
		stmt.close();
	}
	
	public void remove(Curso curso) throws SQLException{
		String sql = "delete from cursos where cod_curso =?";
		PreparedStatement stmt = conexao.prepareStatement(sql);
		stmt.setString(1, curso.getCodigo());
		stmt.execute();
		stmt.close();
	}
	
	// Metodos de acesso as turmas dos curso
	public void adicionaTurma(Turma turma, String codigoCurso)throws SQLException{
		
		//Prepara conex�o
		String sql = "insert into turmascursos(cod_turma,cod_curso)"+
		"values(?,?)";
		PreparedStatement stmt = conexao.prepareStatement(sql);
		
		
		//Seta os valores
		stmt.setLong(1, Integer.valueOf(turma.getCodigo()));
		stmt.setLong(2, Integer.valueOf(codigoCurso));
		
		//Executa o c�digo SQL
		stmt.execute();
		stmt.close();
	}
	
	public void adicionaCursoDepartamento(Curso curso, Departamento deparatamento)throws SQLException{
		
		//Prepara conex�o
		String sql = "insert into cursosdepartamento(cod_curso,cod_departamento)"+
		"values(?,?)";
		PreparedStatement stmt = conexao.prepareStatement(sql);
		
		
		//Seta os valores
		stmt.setString(1, curso.getCodigo());
		stmt.setString(2, deparatamento.getCodigo());
		
		//Executa o c�digo SQL
		stmt.execute();
		stmt.close();
	}
	
	public void adicionarDisciplinaCurso(Curso curso, Disciplina disciplina)throws SQLException{
		
		//Prepara conex�o
		String sql = "insert into disciplinascurso(cod_curso,cod_disciplina)"+
		"values(?,?)";
		PreparedStatement stmt = conexao.prepareStatement(sql);
		
		
		//Seta os valores
		stmt.setString(1, curso.getCodigo());
		stmt.setString(2, disciplina.getCodigo());
		
		//Executa o c�digo SQL
		stmt.execute();
		stmt.close();
	}
	
	
}
